package org.example.sword2offer.primary;

import java.util.*;

/**
 * @author: lynn
 * @Descript: 数据流的中位数
 * 如何得到一个数据流中的中位数？ 是按顺序排列的一组数据中居于中间位置的数
 * @date: 2021/3/25 0:11
 * @version: 1.0
 */
public class Q61_MidStream {
    public static void main(String[] args) {
        Insert(1);
        Insert(4);
        Insert(5);
        Insert(2);
        Insert(7);
        Insert(6);
        System.out.println(GetMedian());
    }




    private static List<Integer> list=new ArrayList<>();
    public static void Insert(Integer num) {
        list.add(num);


    }

    public static Double GetMedian() {
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });
       if (list.size()==0){
           return null;
       }
       if (list.size()==1){
           return list.get(0).doubleValue();
       }
       if (list.size()%2==1){
           return list.get((list.size()-1)/2).doubleValue();
       }else  if (list.size()%2!=1){

           return (list.get((list.size()-1)/2).doubleValue()/2+list.get((list.size()-1)/2+1).doubleValue()/2);

       }
       return null;
    }

}
